package com.cloud.pole.shop.controller.order;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.cloud.pole.common.constant.CommonConstants;
import com.cloud.pole.common.exception.BaseException;
import com.cloud.pole.common.exception.ParamException;
import com.cloud.pole.common.msg.ApiRestResponse;
import com.cloud.pole.common.util.RegexUtils;
import com.cloud.pole.shop.service.order.OrderService;

import lombok.extern.slf4j.Slf4j;

@Controller
@Slf4j
@RequestMapping("/recharge/front")
public class RechargeController {

	@Autowired
	private OrderService orderService;
	
	/**
	 * 生成充值订单
	 */
	@ResponseBody
	@RequestMapping("/createRechargeOrder")
    public ApiRestResponse<String> createRechargeOrder(
    		@RequestParam(defaultValue = "") String token,
    		@RequestParam(defaultValue = "") String productNum,
    		@RequestParam(defaultValue = "") String openId,
    		@RequestParam(defaultValue = "") String mobile,
    		@RequestParam(defaultValue = "") String specId){   	
    	try {
			ParamException.err(StringUtils.isBlank(token), "token不能为空");    		
			ParamException.err(StringUtils.isBlank(productNum), "productNum不能为空");
			ParamException.err(StringUtils.isBlank(specId), "specId不能为空");
			ParamException.err(StringUtils.isBlank(openId), "openId不能为空");
			ParamException.err(StringUtils.isBlank(mobile), "mobile不能为空");
			ParamException.err(!RegexUtils.isPositiveInteger(productNum), "productNum错误");
			ParamException.err(!RegexUtils.isPositiveInteger(specId), "specId错误");
			return ApiRestResponse.success(CommonConstants.STATUS_OK_MESSAGE, orderService.createRechargeOrder(token, Integer.parseInt(specId), Integer.parseInt(productNum), openId, mobile));
    	} catch (BaseException e) {
			return ApiRestResponse.fail(e.getStatus(), e.getMessage(), null);
		} catch (Exception e) {
			log.error(CommonConstants.STATUS_ERROR_MESSAGE + "{}", e.getMessage(), e);
			return ApiRestResponse.fail(CommonConstants.STATUS_ERROR_MESSAGE, null);
		}
    }
}
